package Lee_code;

/**
 * @author blh
 * @date 2024年08月06日 16:51
 */
public class Lee_337_85 {

    public int rob(TreeNode root) {
        // 树形dp
        int[] res = robAction(root);
        return Math.max(res[0], res[1]);
    }

    private int[] robAction(TreeNode root) {
        int[] res = new int[2];
        // res[0] 是不偷, res[1]是偷
        if (root == null) {
            return res;
        }
        int[] left = robAction(root.left);
        int[] right = robAction(root.right);
        res[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);
        res[1] = root.val + right[0] + left[0];
        return res;
    }
}
